package cho114366.basic;

public class J11_Sungjuk_v4 {

	public static void main(String[] args) {
		// 객체지향 기법을 이용해서
		J11SungJuk sj = new J11SungJuk();
		sj.name = "지현";
		sj.kor = 98;
		sj.eng = 45;
		sj.mat = 78;
		// 초기화가 불편- 생성자를 이용할 것!
		sj = new J11SungJuk("수지", 45, 23, 98);
		System.out.println(sj.name);
		System.out.println(sj.kor);
		System.out.println(sj.eng);
		System.out.println(sj.mat);

		System.out.println(sj.getTotal());
		System.out.println(sj.gerAvg());
		//System.out.println(sj.getGrade()); // return 값이 없어서 사용할 수 없음
		sj.getGrade(); //void형 메서드 호출
		System.out.println(sj.grd); // 주의 return 값이 없음
	}// main
}// class

// 성적 데이터 : 이름, 국어, 영어, 수학, 총점, 평균, 학점
// 성적 메서드 : 총점구하기, 평균구하기, 학점구하기
// 결과출력하기
class J11SungJuk {
	String name;
	int kor;
	int eng;
	int mat;
	int tot;
	double avg;
	char grd;

	public J11SungJuk() {
	}// 기본생성자

	public J11SungJuk(String name, int kor, int eng, int mat) {
		this.name = name;
		this.kor = kor;
		this.mat = mat;
		this.eng = eng;
		// this 접두사는 클래스의 멤버변수를 가리킴
		// 만일, 기본생성자 없이 사용자 정의 생성자만 만든다면?

	}// 사용자 정의생성자
		// 메서드 정의

	// void getTotal() {
	// tot = kor + eng + mat;
	// }
	//
	// void gerAvg() {
	// avg = (kor + eng + mat) / 3;
	// }
	//
	// void getGrade() {
	// switch ((int) ((kor + eng + mat) / 3)) {
	// case 10:
	// case 9:
	// grd = '수';
	// break;
	// }
	// void getTotal() {
	// tot = kor + eng + mat;
	// }
	//
	// void gerAvg() {
	// avg = (kor + eng + mat) / 3;
	// }
	//
	// void getGrade() {
	// switch ((int) ((kor + eng + mat) / 3)) {
	// case 10:
	// case 9:
	// grd = '수';
	// break;

	// 메서드의 반환값 유형을 무조건 void로 지정
	int getTotal() {// 아래의 수식의 유형을 int로 쓴다
		tot = kor + eng + mat;
		return tot;// return 값을 int형태로 바꿈
	}

	double gerAvg() {
		// int imsi = getTotal();
		// avg = imsi/3;
		avg = getTotal() / 3;
		return avg;
	}

	void getGrade() {
		switch ((int) (getTotal() / 3)) {
		case 10:
		case 9:
			grd = '수';
			break;
		default:
			grd = '우';

		}
	}// 메서드의 반환값 유형을 결과값의 종류에 따라 지정

}
